Skip to content

fix(ai): 종합 패널 생성 실패가 피드백 전체를 삼키지 않도록 격리 - #143

Merged
i3months merged 1 commit into
devfrom
feature/panel-generate-failure-isolation
Aug 6, 2026
Merged

fix(ai): 종합 패널 생성 실패가 피드백 전체를 삼키지 않도록 격리#143
i3months merged 1 commit into
devfrom
feature/panel-generate-failure-isolation

Conversation

@i3months

@i3months i3months commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • feedback_consumer.handle()의 top-level asyncio.gather에서 자기소개/직무적합도/인성/답변코칭 4개는 각자 내부에서 예외를 삼키는데, 종합 패널(generate())만 그러지 않아 패널이 예상 못 한 이유로 실패하면 gather 전체가 취소되고 피드백 콜백 자체가 발행되지 않는 문제가 있었음
  • _generate_panel 래퍼로 감싸 실패 시 빈 FeedbackResult(weaknesses_summary에 실패 안내)로 대체 — 나머지 4개 부가 평가 결과는 살리고 피드백 발행 자체는 항상 이어지게 함

Test plan

  • uv run pytest 전체 316개 통과 (신규 1건: 패널 생성 실패 시에도 콜백이 발행되는지)
  • black --check, flake8 클린
  • ai/CLAUDE.md §16에 이번 변경 반영

feedback_consumer.handle()의 top-level asyncio.gather 에서 자기소개/
직무적합도/인성/답변코칭은 각자 예외를 삼키는데 종합 패널(generate())만
그러지 않아, 패널이 예상 못 한 이유로 실패하면 gather 전체가 취소되고
피드백 콜백 자체가 발행되지 않는 문제가 있었음. _generate_panel 래퍼로
감싸 실패 시 빈 FeedbackResult로 대체 — 나머지 4개 결과는 살리고
피드백 발행은 항상 이어지게 함. 회귀 테스트 1건 추가.
@i3months
i3months merged commit b239eef into dev Aug 6, 2026
1 check passed
i3months added a commit to i3months/stackup that referenced this pull request Aug 28, 2026
dev 배포가 PR Team-StackUp#144 부터 4회 연속 실패했다. 원인은 백엔드 Docker 빌드:

  Exception in thread "main" java.io.IOException:
    Downloading from https://services.gradle.org/distributions/gradle-9.4.0-bin.zip
    failed: timeout (10000ms)

베이스 이미지가 gradle:8.12-jdk21 인데 wrapper 는 9.4.0 을 요구해서, 매 빌드마다
배포판(약 130MB)을 새로 내려받고 있었다. self-hosted runner 에서 services.gradle.org
접속이 타임아웃돼(wrapper 기본 10s) 실패한다. 재시도해도 27초만에 같은 지점에서
죽어 일시적 문제가 아니었다.

Team-StackUp#143 까지 성공한 건 그 PR 들이 backend/ 를 건드리지 않아 Docker 레이어 캐시가
살아있었기 때문이다. Team-StackUp#144 에서 backend 소스가 바뀌자 캐시가 깨지고 증상이 드러났다.

수정: 베이스 이미지를 gradle:9.4.0-jdk21 로 올리고 wrapper 대신 이미지에 들어있는
gradle 을 쓴다 → 네트워크 의존이 사라진다. 태그는 gradle-wrapper.properties 의
버전과 정확히 맞췄다(9.4-jdk21 은 9.4.1 로 해석돼 로컬과 어긋난다).
의존성 해결을 별도 레이어로 분리해 소스만 바뀔 때 재다운로드도 건너뛴다.

wrapper 의 networkTimeout 은 10s → 120s. Docker 빌드와는 무관해졌지만 로컬에서
./gradlew 로 빌드할 때의 여유를 둔다.

검증: 로컬에서 docker build 성공(BUILD SUCCESSFUL, 배포판 다운로드 없음),
./gradlew --version 도 9.4.0 으로 이미지와 일치.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant